• List of mounted projects - Below the divider line in this menu is a list of the currently mounted projects. The "current" project is the checkmarked one. Selecting a project from this menu makes it the current project, and switches the current checkout dir to the one you defined for that project.
• Unmount Current/All - UnMount (and remove from the Projects menu) either all projects or just the current one. Unmounting is used mainly to remove projects you're no longer interested in from the Projects menu in order to unclutter it.
• Refresh - This command will refresh the list of projects shown in this menu by asking SourceServer for the list of currently mounted projects.
Checkout Dir SubMenu
• List of checkout dirs - This submenu lists all the currently known checkout directories. Source Manager gets to "know" about a checkout dir in two ways: 1. by directories you specify in the "Edit CheckOut Dirs" window, and 2. directories Source Manager encounters when you drag folders to it. It combines these two sources to make this list. When you select a project from the Projects menu, Source Manager will automatically make the proper checkout directory current (if you defined one for that project).
• Set or Other - when there are no known checkout dirs, this is called Set, otherwise it's called Other. In either case, this command lets you specify some other directory as a checkout directory.
• Remember - This is quick way of permanently associating the current checkout dir with the current project. (the other way to do this is by using the Edit CheckOut Dirs command). It puts up a little dialog where you can confirm this operation.
Edit Checkout Dirs
• What it's for - This command brings up the "Edit CheckOut Dirs" window, where you can specify permanent associations of projects and directories. Source Manager saves the information you enter here in its preferences file.
• "All / Current Projects" - These radio buttons select between all known projects, or just the currently mounted ones. This is an option simply so that you don't have to look at all projects if all you're interested in are the currently mounted ones. If SourceServer isn't running, these buttons are disabled, and are set to "All".
• "Recursive" column - This column is for specifying whether a Get All From command should be recursive or not, for the given project. You would want recursion if your local folder hierarchy mirrors the project hierarchy. That way, you only need to specify checkout dirs for top-level projects. If you don't want recursion, specify a directory for each project and subproject you intened to work with.
Edit Project Groups
• What it's for - This command brings up the "Edit Project Groups" dialog, where you can define and edit project groups. Project groups show up in the Get All From command's submenu. Thus, you can execute one Get All From command to have SM get all files from all the projects defined in that group. The files will go into the dirs you specified for each project using the Edit CheckOut Dirs command (above). This is especially handy when your local folders don't match the project hierarchy, or when the files you need are from multiple top-level projects.
• Available Projects - This lists all the projects Source Manager knows about. You can add one of these projects to the current group by double-clicking it, or by clicking the Add Project button.
• Projects In Group - This lists the projects in the current group. You can choose remove projects from this list by double-clicking them or clicking the Remove Project button.
• To create a new group - Click on the Current Project popup, and select Create New Group.
Options Menu - Check In
• Answer Dialogs - When this is checked, SM will include a -y or -n option in the CheckIn command it sends to SourceServer. Choose which answer by checking either Answer Dialogs With "Yes" or Answer Dialogs With "Yes". This option is SourceServer's way of letting you suppress dialogs by pre-answering them. If you were using Projector, you might actually be presented with a dialog during a CheckIn, in which you could answer yes or no to the question Projector wanted to know. An example question that can come up is "File x hasn't changed since checkout, checkin anyway?". However, there are other questions that come up, depending on the situation, so be sure you understand what you're really answering yes or no to when you use this option. SourceServer doesn't support presenting dialogs to the user, so you either have to pre-answer them or let SourceServer do its default thing. In the above example, the default thing would be that SourceServer would not check in the file, and would report why. You would then see that message in the SourceServer Replies window.
• Infer Project For Orphans - Normally, when you check in an orphan, it will get checked into the current project (which you can see by looking at the Projects menu. However, when Infer Project is checked, Source Manager will ignore the current project and to try to infer the "correct" project for the orphan, and use that project for the CheckIn command it sends to SourceServer, or for the CheckIn commands generated by the Copy CheckIn Cmds command. SM assumes there is only one project per folder, so it determines the "correct" project for an orphan by looking at the folder the orphan is from and trying to find a project file in that folder. The first one it finds becomes the project it uses. Thus, if you have only one project per folder, which is the normal case, orphans will always go to the right project if they're in the same folder.
• Report Progress - When this is checked, SM will include a -p option in the CheckIn command it sends to SourceServer. This tells SourceServer to report progress messages, which you will see in the SourceServer Replies window.
Options Menu - Mount Projects
• Mount Projects - When this is checked, if you drag-drop or Open... a single folder that contains a “ProjectorDB” file, SM will mount that project, unless you hold down the option key. If you drag-drop more than one folder, it won't do this. If this option is unchecked, you can manually mount a project using the Projects>Mount ProjectorDB... command. Note: SM will always mount a ProjectorDB if it is individually Open'ed or drag-dropped.
Commands which don't require a selection to be made in the table
• Launch SourceServer - If SourceServer isn't already running, you can launch it using this command. The first time you use this command, Source Manager will ask you to find SourceServer and offer to find it for you. From then on, even after quitting and re-running, Source Manager will remember where it is so you won't be asked to find it again (unless you move it). Tip: Hold down the shift key when you choose this command in order to invoke the find dialog where you can manually find a different SourceServer, in case you have more than one on your disk.
• Mount ProjectorDB - Works identical to Think C's command by the same name. Just select the ProjectorDB file of your top level project. All nested projects will be automatically mounted.
• Create New Project - Identical to Think C’s command, it asks you to name the new project and select a location for it. It then creates a folder of that name with the new ProjectorDB file inside it.
• Get All From - Check out (read-only) all newer files from the current project or project group. The first item in this submenu will be the current project. If there are any other items in this menu, they are project groups (below a divider). You can define project groups using the Edit Project Groups command. The files will go into the dirs you defined for each project in Edit CheckOutDirs.
Tip: to get non-recursively (i.e. current project only, no subprojects), hold down the option key when choosing this command.
• List Newer -This is identical to the Get All From->CurrentProj command except that instead of checking out, it simply lists what files would get checked out if you chose that command.
• GetNamedRevisions - Get (i.e. check out read-only) all files associated with the symbolic name you choose from this menu. This menu will be disabled if there are no names defined in the current project.
• DeleteNames - Delete the symbolic name you specify from the database. This menu will be disabled if there are no names defined in the current project.
• NameRevisions - Define a symbolic name to be associated with the latest revisions of the mounted project. Names are often used to denote the set of files that build a shipped version of your program.
• Open CheckOut Window - Open a CheckOut Window for the current project. In this window, you will see a table of the files in that project. When this table first opens, it has minimal information about the files, in order to come up nice and quickly. To see more information on a particular file, select the file and click the Info button, or simply double-click (in the Filename column). A new window will open, showing all revisions of that file. To see the comment of a particular revision in its entirety (instead of just what you can see in the table) double-click the comment cell. A window will open showing that comment. Unfortunately, the window is read-only because SourceServer does not provide any way to change the comment associated with a file that's already in the database.
• Rename Modified And Check Out - This command lets you merge mod-read-only files into the database. What it does is it renames your modified file to have a "$$$" suffix, then checks out the latest revision from the database, and shows the two files in the table. At that point, you can select the two files, and, if you own BBEdit, choose "Compare Two Files", and BBEdit will come to front, all setup, showing you the differences between the two files. You can then merge into the checked out file, and return to SM. When you return, you can then check in the checked out file, and trash the "$$$" file (SM will automatically offer to trash it for you).
This command operates in two ways depending on whether or not you have a table up and something is selected. If so, it only operates on the selected files which are mod-read-only. If you have nothing selected, or no table is up, it goes through the currently selected CheckOut directory and operates on any and all mod-read-only files it finds in that directory (non-recursively). You could then drag that folder onto SM and see all the files paired right next to each other (since their names only differ by their suffix) ready to do your compares.
Commands which operate on the selected files in a table
• CheckIn - Checks in the selected files to their respective projects. If there are orphans in the selection, Source Manager will infer (if "infer projects" is on) which project to check the file into by looking for another file in the same directory that has a 'ckid' resource. The first one it finds is used. If "infer project" is off, it checks the file into the currently mounted project (top level).
• CheckOutModifiable -Check out the selected files for modification. The files must already belong to a mounted project. The one thing you still can't do with SM is check out files that you don't already have on your disk, because I still haven't implemented the Check Out window found in Projector or SourceServer, where you can examine the files in the database. I hope to find time to do this in a future rev.
• CheckOutReadOnly -Check out Read-0nly the latest version of the selected files. The files must already belong to a mounted project and must be currently Read-Only. If they're not, SourceServer will reply that it could not perform the command.
• Cancel Checkout - Cancel the checkout of the selected files. You’ll lose any changes you may have made since checkout and the file will become Read-Only again.
• DeleteRevisions - Deletes all revisions of the selected files from the Projector/SourceServer database. After that, it “orphans” the files on your disk (i.e. removes the ‘ckid’ resource), which is generally what you would want to do after DeleteRevisions. Besides the obvious reason for using this command (to remove obsolete files from the database), another use is in freeing up space in your ProjectorDB database. You could, for example, delete all revisions of a file and then check in the latest revision, which you still have on your disk, and which is now an orphan. By the way, an interesting note I learned from Apple: deleting all revisions of a non-text file, such as a resource file, does not always shrink the ProjectorDB database. It sometimes just frees the space internally, which it then uses as needed for future checkins.
• RenameProjectorFile - For the selected files, Source Manager will, one by one, ask you for a new filename and then issue a RenameProjectorFile command to SourceServer, and then it will rename your file and update its 'ckid' resource so Projector/SourceServer won't complain about your file having a bad 'ckid'. This makes a once difficult task a breeze.
• Obsolete/UnObsoleteProjectorFile - Obsoleting files is useful for when you want to prevent a file from being checked out but want to leave it in the database for reference or possible future unobsolescence (is that a word?).
• Get Revision History - This is a way of seeing the comments for each revision of the file in the database. For each selected file, SM sends a “ProjectInfo -comments -project <project> filename” command to SourceServer. The results are displayed in the “SourceServer Replies” window and consist of a little summary, including the comment, for each revision of the file in the database.
• Compare To Previous Revision - This is for comparing your local file to any previous revision of the same file in the project database (you must have BBEdit in order to use this command). This command is only enabled when you have exactly one file selected in your active table. This menu item is a submenu containing a list of the revision numbers available. For example if your local file is revision 4, you'll see 4 items in the menu: "1","2","3" and "4". Choose which revision you'd like to compare your local file to, and SM will then check that revision out (read-only) from the database into a temporary folder SM creates on your disk (located insided SM's folder). It then sends the "Compare Two Files" command to BBEdit and switches BBEdit to the front, where you'll see the comparison all set up for you. When you quit SM, it will delete the temporary folder it creates (and the files in it).